package com.example.server;

import com.example.dto.dept.Dept;
import com.example.dto.dept.DeptCriteria;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface DeptServer {
    /**
     * 查询部门
     *
     * @param
     * @return Map<String, Object>
     */

    /**
     * 创建
     * @param resources /
     */
    void create(Dept resources);

    /**
     * 删除
     *
     * @param deptDtos /
     */
    void delete(Set<Dept> deptDtos);

    /**
     * 编辑
     * @param resources /
     */
    void update(Dept resources);

    /**
     * 根据PID查询
     *
     * @param pid /
     * @return /
     */
    List<Dept> findByPid(long pid);

    /**
     * 根据ID查询
     *
     * @param id /
     * @return /
     */
    Dept findById(Long id);

    /**
     * 获取待删除的部门
     *
     * @param deptList /
     * @param deptDtos /
     * @return /
     */
    Set<Dept> getDeleteDepts(List<Dept> deptList, Set<Dept> deptDtos);

    /**
     * 根据ID获取同级与上级数据
     * @param deptDto /
     * @param depts /
     * @return /
     */
    List<Dept> getSuperior(Dept deptDto, List<Dept> depts);

    /**
     * 构建树形数据
     * @param deptDtos /
     * @return /
     */
    Object buildTree(List<Dept> deptDtos);
    /**
     * 获取
     * @param deptList
     * @return
     */
    List<Long> getDeptChildren(List<Dept> deptList);

    List<Dept> list(DeptCriteria criteria);
}
